腾讯云 RTC SDK

您所在的位置:网站首页 audio mute 腾讯云 RTC SDK

腾讯云 RTC SDK

2024-04-29 18:03| 来源: 网络整理| 查看: 265

功能说明

本文主要介绍如何在通话过程中动态地开关摄像头及麦克风。

实现方案 方案一:使用 mute/unmute 方法

在通话过程中使用 muteAudio()、unmuteAudio()、muteVideo()、unmuteVideo() 方法开关摄像头及麦克风。

代码示例:

// 关闭音频,远端会收到 'mute-audio' 事件 localStream.muteAudio(); // 打开音频,远端会收到 'unmute-audio' 事件 localStream.unmuteAudio(); // 关闭视频,远端会收到 'mute-video' 事件 localStream.muteVideo(); // 打开视频,远端会收到 'unmute-video' 事件 localStream.unmuteVideo(); 优点:耗时短,兼容性强。 缺点:使用 muteVideo/muteAudio 不会停止设备采集,此时摄像头、麦克风的灯任然是亮着的。 方案二:使用 addTrack/removeTrack 方法

通话过程中使用 addTrack() 和 removeTrack() 开关摄像头。

代码示例:

// 关闭摄像头 const videoTrack = localStream.getVideoTrack(); if (videoTrack) { await localStream.removeTrack(videoTrack) // 停止采集,关闭摄像头 videoTrack.stop(); } // 打开摄像头 const videoStream = TRTC.createStream({ userId, audio: false, video: true }); await videoStream.initialize(); await localStream.addTrack(videoStream.getVideoTrack()); // 关闭麦克风 const audioTrack = localStream.getAudioTrack(); if (audioTrack) { await localStream.removeTrack(audioTrack); audioTrack.stop(); } // 打开麦克风 const audioStream = TRTC.createStream({ audio: true, video:false }); await audioStream.initialize(); await localStream.addTrack(audioStream.getAudioTrack()); 优点:关闭摄像头、麦克风时,会停止采集,摄像头及麦克风灯不会继续亮着。 缺点:开关麦克风方案的兼容性稍差于方案一,可参考:replaceTrack() 中关于兼容性的描述。

注意:

v4.15.0 之前的版本, removeTrack() 不支持 remove audio track,需使用下述方式实现开关麦克风。

通话过程中使用 replaceTrack() 开关麦克风。

代码示例:

// 关闭麦克风 localStream.muteAudio(); const audioTrack = localStream.getAudioTrack(); if (audioTrack) { audioTrack.stop(); } // 打开麦克风,重新采集麦克风并替换 audio track const stream = TRTC.createStream({ audio: true, video:false }); await stream.initialize(); localStream.unmuteAudio(); await localStream.replaceTrack(stream.getAudioTrack());


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3